/**
 * @param {string} path
 * @returns {Boolean}
 */
export function isExternal(path) {
  return /^(https?:|mailto:|tel:)/.test(path)
}

/**
 * [验证是否是数字]
 * 包含小数点、正负数
 * @return
 */
export const validateNum = (rule, value, callback) => {
  const reg = /^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/

  if (reg.test(value)) {
    callback()
  } else {
    callback(new Error('请输入数字'))
  }
}

/**
 * [验证是否是正整数]
 * 只能是不小于0的正整数
 * @return
 */
export const validateDigits = (rule, value, callback) => {
  const reg = /^\d+$/

  if (reg.test(value)) {
    callback()
  } else {
    callback(new Error('请输入整数'))
  }
}

/**
 * [验证是否是正负整数]
 * 包含正数、负数
 * @return
 */
export const validateInt = (rule, value, callback) => {
  const reg = /^-?\d+$/

  if (reg.test(value)) {
    callback()
  } else {
    callback(new Error('请输入整数'))
  }
}

/**
 * [验证价格]
 * 不小于0.00的价格
 * @return
 */
export const validatePrice = (rule, value, callback) => {
  const reg = /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/

  if (!value || reg.test(value)) {
    callback()
  } else {
    callback(new Error('请输入正确的价格格式'))
  }
}

/**
 * [验证是否true]
 * @return
 */
export const validateTrue = (rule, value, callback) => {
  if (typeof value === 'boolean' && value) {
    callback()
  } else {
    callback(new Error(''))
  }
}

/**
 * [验证身份证格式]
 */
export const validateIdentity = (rule, value, callback) => {
  const reg = /^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|x|X)$/

  if (reg.test(value)) {
    callback()
  } else {
    if (!value || value === '') {
      callback()
    } else {
      callback(new Error('身份证格式错误'))
    }
  }
}

/**
 * [验证11位手机号]
 */
export const validateMobile = (rule, value, callback) => {
  const reg = /^1([389][0-9]|4[14579]|5[0-3,5-9]|6[6789]|7[0135678])\d{8}$/

  if (reg.test(value)) {
    callback()
  } else {
    if (!value || value === '') {
      callback()
    } else {
      callback(new Error('手机格式错误'))
    }
  }
}

/**
 * [验证银行卡]
 */
export const validateCard = (rule, value, callback) => {
  const reg = /^[1-9]\d{9,19}$/

  if (reg.test(value)) {
    callback()
  } else {
    if (!value || value === '') {
      callback()
    } else {
      callback(new Error('银行卡格式错误'))
    }
  }
}

/**
 * [8-20位字母、数字、特殊字符组合]
 */
export const validatePass = (rule, value, callback) => {
  const reg =
    /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[~$@$!%*#?&()+_=.,/<>])[A-Za-z\d~$@$!%*#?&()+_=.,/<>]{8,20}$/

  if (reg.test(value)) {
    callback()
  } else {
    if (!value || value === '') {
      callback()
    } else {
      callback(new Error('密码为8-20位大小字母、数字、特殊字符的组合'))
    }
  }
}
